package util;

import java.lang.reflect.Field;
import java.sql.ResultSet;

public class DataUtils {
    /**
     * 封装resultset
     *
     * @param cls
     * @param rs
     * @param <T>
     * @return
     */
    public static <T> T dataEncapsulation(Class<T> cls, ResultSet rs) {
        T t = null;
        try {
            t = cls.getDeclaredConstructor().newInstance();
            Field[] fields = cls.getDeclaredFields();
            if (rs.next()) {
                for (int i = 1; i <= rs.getMetaData().getColumnCount(); i++) {
                    for (Field field : fields) {
                        field.setAccessible(true);
                        if (rs.getMetaData().getColumnName(i).toLowerCase().equals(field.getName())) {
                            field.set(t, rs.getObject(field.getName()));
//                            if(String.valueOf(field.getType()).equals("class java.lang.String")){
//                                field.set(t,rs.getString(field.getName()));
//                                break;
//                            }
//                            if(String.valueOf(field.getType()).equals("int")||String.valueOf(field.getType()).equals("class java.lang.Integer")){
//                                field.set(t,rs.getInt(field.getName()));
//                                break;
//                            }

                        }
                    }
                }
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return t;
    }


//    public static <T>T dataEncapsulation(Class<T> cls, ResultSet rs,int is){
//        T t=null;
//        try {
//            t=cls.getDeclaredConstructor().newInstance();
//            Field[] fields=cls.getDeclaredFields();
//            if (rs.next()){
//                for(int i=1;i<=rs.getMetaData().getColumnCount();i++){
//                    for (Field field : fields) {
//                        field.setAccessible(true);
//                        if(rs.getMetaData().getColumnName(i).toLowerCase().equals(field.getName())){
//                            if(String.valueOf(field.getType()).equals("class java.lang.String")){
//                                field.set(t,rs.getString(field.getName()));
//                                break;
//                            }
//                            if(String.valueOf(field.getType()).equals("int")||String.valueOf(field.getType()).equals("class java.lang.Integer")){
//                                field.set(t,rs.getInt(field.getName()));
//                                break;
//                            }
//                        }
//                    }
//                }
//            }
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return t;
//    }
}
